package com.lyr.reflectdemo;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class TestStu03 {
    public static void main(String[] args) {
        test02();

    }

    /**
     * Constructor类：构造方法的调用
     */
    public static void test02(){
        try {
            // 获取Class对象
            Class type1=Class.forName("com.lyr.reflectdemo.Student");
            // 通过指定参数类型，创建指定的构造函数
            Constructor cu=type1.getDeclaredConstructor(int.class,String.class,boolean.class);
            // 使用构造函数对象实例化Student对象
            Student st=(Student)cu.newInstance(20200605,"tony",true);
            // 调用方法
            st.sayHi();
            System.out.println(st);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }





    /**
     * Method类操作：返回值
     */
    public static void test01(){
        //第一种，通过类名.class获取
        Class type1=Student.class;
        try {
            // 获取指定名字和参数的方法
            Method md=type1.getDeclaredMethod("stuNum");
            // 实例化对象
            Student st=(Student) type1.newInstance();
            // 执行方法，返回值是该方法的返回值
            Object ob=md.invoke(st);
            System.out.println(ob);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
